파이선 소개

세상에는 다양한 컴퓨터 프로그램 언어가 있다. 사람들 사이에 정보를 교환하기 위해 한국어나 영어와 같은 언어가 필요하듯이, 주어진 목표를 얻기 위해 컴퓨터 프로그램을 작성하고자 하는 사람도 컴퓨터에게 정보를 전달하는 언어가 필요하다. 컴퓨터 하드웨어의 발전과 함께 다양한 프로그램 언어가 등장해 인기를 얻고 다음에 등장하는 더 효율적인 프로그램 언어에 자리를 물려주고는 했다. 한국어와 영어 중 어떤 언어가 더 효율적인 지를 직접 비교할 수 없는 것과 마찬가지로 현재 세상에 존재하는 수많은 프로그램 언어에 명확한 우열은 없다. 하지만, 좋은 프로그램 언어라면 꼭 가져야할 조건은 있다. 먼저, 프로그램을 작성하고, 프로그램의 오류를 찾아 고치기가 편리할 뿐 아니라, 다른 사람의 프로그램을 이해하는 것도 쉬워야 한다(편이성). 또, 다른 사람이 이미 작성해 놓은 다양한 프로그램이 공개되어 있고, 이를 내 프로그램의 일부로 쉽게 가져와 이용할 수 있어야 한다(확장성). 사람마다 구현하고자 하는 제각각 다른 목표를 사용하는 프로그램 언어로 폭넓게 구현할 수 있어야 한다(범용성)는 것도 중요하다. 사실, 많은 사람들이 이용하는 프로그램 언어라면 대부분 위의 조건들을 모두 충족한다고 할 수 있는데, 최근 과학 분야, 특히 물리학 분야에서는 파이선을 이용해 프로그램을 작성하는 사람이 늘고 있다.

프로그램 언어는 컴퓨터가 프로그램을 실행하는 방식에 따라 두 종류로 나뉜다. 프로그램 작성자는 미리 약속되어 있는 소수의 짧은 영어 단어와 수학 기호의 집합으로 이루어진 텍스트의 형식으로 프로그램을 작성하게 된다. 이를 컴퓨터가 이해할 수 있는 내부의 언어(기계어라 부른다. 0과 1로만 구성된 긴 숫자의 나열이다)로 바꾸는 과정을 전체 프로그램에 대해 한번 수행해서 별도의 실행 가능 파일을 생성하는 식으로 작동하는 프로그램 언어가 있다. 사람이 만든 텍스트 형식의 프로그램 전체를 기계어로 바꾸는 과정을 컴파일(compile)이라고 해서, 이런 종류의 프로그램 언어는 “컴파일 언어”라 불린다. 과학 분야에서 널리 이용되었고 지금도 상당한 사용자를 가지고 있는 컴파일 언어로는 포트란과 C를 들 수 있다. 이 책에서 이용할 파이선은 컴파일 언어가 아니다. 텍스트로 작성된 파이선 프로그램을 실행하면, 프로그램의 한 줄 한 줄이 위에서 아래로 순서대로 한 줄 씩 기계어로 바뀌어 실행된다. 이처럼 매번 프로그램을 실행할 때 마다, 텍스트를 한 줄 씩 기계어로 다시 해석해 동작하는 프로그램 언어를 “인터프리터 언어”라고 한다. 컴파일 언어는 프로그램을 컴파일 하는 단계에서는 어느 정도 시간이 걸리지만, 이미 컴파일이 완료되어 컴퓨터에 저장된 실행 가능 파일을 컴퓨터가 최종 실행하는 것은 상당히 효율적일 수 있다. 지금까지도 많은 물리학 연구자가 C와 같은 컴파일 언어를 이용해 프로그램을 작성하는 이유다. 모든 언어에 대해 단정하기는 어렵지만, 바로 이런 이유로 컴파일 언어의 실행 속도는 인터프리터 언어보다 빠르다. 인터프리터 언어는 매번 실행할 때마다, 다시 한 줄 한 줄을 기계어로 해석해야 하기 때문이다. 비록 인터프리터 언어의 실행속도가 대개의 컴파일 언어보다 느리지만, 프로그램 작성을 시작해 오류가 없는 최종 프로그램으로 점차적으로 완성해가는 과정에서 중간 단계의 프로그램을 매번 컴파일 할 필요가 없는 인터프리터 언어가 큰 이점이 있는 것이 사실이다. 컴퓨터 하드웨어의 빠른 발전으로, 완성된 최종 프로그램이 실행되는 속도보다 프로그램 개발 과정을 얼마나 빨리 마칠수 있는지가 중요해지게 되어서, 현재 점점 더 많은 과학자가 파이선을 이용하고 있다. 일단 숙달하게 되면 “파이선을 이용하면 생각의 속도로 코딩을 할 수 있다”는 이야기도 있을 정도다. 이 책은 물리학에서 자주 등장하는 다양한 문제를 파이선 프로그램을 이용해 해결한다.

파이선 설치하기

파이선은 숫자 2로 시작하는 버전(python2)과 숫자 3으로 시작하는 버전(python3)이 공존하고 있다. 현재의 상황으로 미루어 보면 python3으로 멀지않은 시점에 통일될 것으로 보인다. 특히, 우리나라의 한글을 프로그램에서 이용하려면 python3를 사용하는 것이 좋다. 파이선을 사용자의 컴퓨터에 인스톨하는 방법도 다양하다. 예를 들어, https://www.anaconda.com 에서 anaconda distribution을 내려 받아 설치하는 것도 좋은 방법이다. 아나콘다의 배포판을 이용하면 파이선 프로그램을 작성하기 위해 필요한 여러 다양한 표준적인 패키지들을 설치하는 것도 무척 편리하다. 아나콘다 배포판을 설치한 후에는 Anaconda-Navigator를 실행하고는 jupyter notebook을 클릭해 실행하면 파이선 프로그램을 작성해 실행할 수 있는 창이 웹브라우저에서 열리게 된다. 이 창에서 New -> Python3를 택하면 이제 파이선 프로그램을 작성할 수 있는 아래 화면을 볼 수 있다. 이 책에서는 모든 파이선 프로그램을 jupyter notebook을 이용해 작성한다.